'''
Created on 10/04/2013

@author: mirta
'''

from app import db
from app.models.permiso import Permiso

association_table = db.Table('rol_permiso', db.Model.metadata,
    db.Column('rol_id', db.Integer, db.ForeignKey('rol.id')),
    db.Column('permiso_id', db.Integer, db.ForeignKey('permiso.id'))
)


class Rol(db.Model):
    """
    Clase que representa la tabla rol de la base de datos
    """

    __tablename__ = 'rol'
    id = db.Column(db.Integer, primary_key=True)
    nombre = db.Column(db.String(50), unique=True)
    descripcion = db.Column(db.String(120))
    permiso = db.relationship(Permiso,
                    secondary=association_table,
                    backref="rol")
   
    
    def __init__(self, nombre=None, descripcion=None, permiso=None):
        """
        Constructor de la clase Entidad
        :param nombre:
        Nombre de la entidad rol
        :param descripcion:
        Descripcion de la entidad rol
        :param  permisos:
        Lista de permisos que tiene la entidad rol
        """
        self.nombre = nombre
        self.descripcion = descripcion
        self.permiso = permiso

    def __repr__(self):
        return '<Rol %r>' % (self.nombre)
    
    def setNombre(self, nombre):
        """
        Setea el nombre de la entidad rol
        :param nombre:
        nombre del rol
        """
        self.nombre = nombre
        
    def setDescripcion(self, descripcion):
        """
        Setea la descripcion de la entidad rol
        :param descripcion:
        descripcion del rol
        """
        self.descripcion = descripcion
    
    def setPermisos(self, permisos):
        """
        Setea la lista de permisos de la entidad rol
        :param permisos:
        lista de permisos del rol
        """
        self.permiso = permisos
    
    